package com.wn.sk.member.controller;


import com.wn.common.api.Result;
import com.wn.sk.member.entity.User;
import com.wn.sk.member.entity.dto.UserDto;
import com.wn.sk.member.service.IUserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

/**
 * <p>
 * 会员用户表 前端控制器
 * </p>
 *
 * @author Yellow Docker
 * @since 2022-11-08
 */
@Api(tags = "会员模块")
@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired
    private IUserService userService;

    /**
     *  登录操作的优化:
     *  1、数据的封装
     *        entity 实体 User 的字段太多了,不利于维护
     *        解决: 封装 dto (DTO:数据传输对象，主要用于外部接口参数传递封装，接口与接口进行传递使用。)
     *
     *  2、校验
     *      前端校验、后端校验
     *      hibernate-validator  校验框架(基于 JRS303 的实现 (一套标准))
     *      可以很方便的使用注解进行校验
     *
     * 3、教研室失败的时候 需要处理异常
     *
     *
     * @param userDto
     * @return
     */
    @ApiOperation("登录操作")
    @PostMapping("login")
    public Result<String> login(@RequestBody @Validated UserDto userDto){
        return userService.login(userDto);
    }

    @ApiOperation("产品查询,有权限操作")
    @GetMapping("/auth/find")
    public Result<String> findAuthUsers(){

        //拿到登录的用户信息

        return Result.ok("auth 有权限就可以访问 member 微服务");
    }

}

